"""
题目：完全无向图是指 “任意两个不同顶点之间都存在边” 的图，给定一个无向图，判断其是否为完全图。
"""


class Graph:
    def __init__(self, is_directed=False):
        self.vertices = {}
        self.is_directed = is_directed  # 本题固定为无向图

    def add_vertex(self, vertex):
        if vertex not in self.vertices:
            self.vertices[vertex] = []

    def add_edge(self, v1, v2):
        self.add_vertex(v1)
        self.add_vertex(v2)
        self.vertices[v1].append(v2)
        if not self.is_directed:
            self.vertices[v2].append(v1)

    def is_complete_graph(self):
        """判断无向图是否为完全图"""
        n = len(self.vertices)
        if n <= 1:
            return True  # 1个或0个顶点的图视为完全图

        # 完全图中每个顶点的度数 = n-1（连接所有其他顶点）
        for vertex in self.vertices:
            if len(self.vertices[vertex]) != n - 1:
                return False
        return True


# 测试
if __name__ == "__main__":
    # 测试完全图（3个顶点）
    complete_graph = Graph()
    complete_graph.add_edge(0, 1)
    complete_graph.add_edge(0, 2)
    complete_graph.add_edge(1, 2)
    print("3顶点图是否为完全图:", complete_graph.is_complete_graph())  # 输出: True

    # 测试非完全图（3个顶点，缺少0-2边）
    incomplete_graph = Graph()
    incomplete_graph.add_edge(0, 1)
    incomplete_graph.add_edge(1, 2)
    print("3顶点非完全图:", incomplete_graph.is_complete_graph())  # 输出: False